<

Android 用のアプリリンクを設定する

ディープリンクは、URI を使用してアプリを起動するためのメカニズムです。 この URI にはスキーム、ホスト、パスが含まれます。 アプリを開き、特定の画面を表示します。

アプリリンクを使用するディープリンクの一種です。httpまたhttpsAndroid デバイス専用です。

アプリリンクを設定するには、Web ドメインを所有している必要があります。 それ以外の場合は、使用を検討してくださいFirebaseホスティングまたGitHub ページ一時的な解決策として。

1. Flutter アプリケーションをカスタマイズする

受信 URL を処理できる Flutter アプリを作成します。 この例では、go_routerルーティングを処理するパッケージ。 Flutter チームは、go_routerパッケージ。 複雑なルーティング シナリオを処理するためのシンプルな API を提供します。

  1. 新しいアプリケーションを作成するには、次のように入力します。flutter create <app-name>:

     $ flutter create deeplink_cookbook
    
  2. 含めるgo_routerアプリ内のパッケージ、 依存関係を追加しますgo_routerプロジェクトに:

    追加するには、go_routerパッケージを依存関係として、 走るflutter pub add:

     $ flutter pub add go_router
    
  3. ルーティングを処理するには、 を作成するGoRouter内のオブジェクトmain.dartファイル:

    import 'package:flutter/material.dart';
     import 'package:go_router/go_router.dart';
    
     void main() => runApp(MaterialApp.router(routerConfig: router));
    
     /// This handles '/' and '/details'.
     final router = GoRouter(
       routes: [
         GoRoute(
           path: '/',
           builder: (_, __) => Scaffold(
             appBar: AppBar(title: const Text('Home Screen')),
           ),
           routes: [
             GoRoute(
               path: 'details',
               builder: (_, __) => Scaffold(
                 appBar: AppBar(title: const Text('Details Screen')),
               ),
             ),
           ],
         ),
       ],
     );

2. AndroidManifest.xmlを変更する

  1. VS Code または Android Studio で Flutter プロジェクトを開きます。
  2. 案内するandroid/app/src/main/AndroidManifest.xmlファイル。
  3. 次のメタデータ タグとインテント フィルターを<activity>タグ付き.MainActivity

    交換example.com独自の Web ドメインを使用します。

     <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
     <intent-filter android:autoVerify="true">
         <action android:name="android.intent.action.VIEW" />
         <category android:name="android.intent.category.DEFAULT" />
         <category android:name="android.intent.category.BROWSABLE" />
         <data android:scheme="http" android:host="example.com" />
         <data android:scheme="https" />
     </intent-filter>
    

3.assetlinks.jsonファイルのホスティング

を主催するassetlinks.jsonWebサーバーを使用してファイルを作成する あなたが所有するドメインを使用して。このファイルは、 代わりに開く Android アプリケーションのモバイル ブラウザ ブラウザの。ファイルを作成するには、 で作成した Flutter アプリのパッケージ名を取得します。 前のステップと sha256 フィンガープリント APK のビルドに使用する署名キー。

パッケージ名

パッケージ名を見つけますAndroidManifest.xml、 のpackage下のプロパティ<manifest>鬼ごっこ。 パッケージ名は通常、次の形式です。com.example.*

sha256 指紋

プロセスは、APK の署名方法によって異なる場合があります。

Google Play アプリ署名の使用

sha256 フィンガープリントは play から直接見つけることができます 開発者コンソール。 Play コンソールでアプリを開きます。 下「リリース」>「セットアップ」>「アプリの整合性」>「アプリ署名」タブ:

Screenshot of sha256 fingerprint in play developer console

ローカルキーストアの使用

キーをローカルに保存している場合は、 次のコマンドを使用して sha256 を生成できます。

keytool -list -v -keystore <path-to-keystore>

アセットリンク.json

ホストされたファイルは次のようになります。

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.deeplink_cookbook",
    "sha256_cert_fingerprints":
    ["FF:2A:CF:7B:DD:CC:F1:03:3E:E8:B2:27:7C:A2:E3:3C:DE:13:DB:AC:8E:EB:3A:B9:72:A1:0E:26:8A:F5:EC:AF"]
  }
}]
  1. をセットするpackage_name値を Android アプリケーション ID に設定します。

  2. sha256_cert_fingerprints を取得した値に設定します 前のステップから。

  3. 次のような URL でファイルをホストします。<webdomain>/.well-known/assetlinks.json

  4. ブラウザがこのファイルにアクセスできることを確認してください。

テスト

実際のデバイスまたはエミュレータを使用してアプリのリンクをテストできます。 ただし、最初に実行したことを確認してくださいflutter run少なくとも一度は デバイス。これにより、Flutter アプリケーションが確実にインストールされます。

Emulator screenshot

テストするそれだけアプリのセットアップでは、adb コマンドを使用します。

adb shell 'am start -a android.intent.action.VIEW \
    -c android.intent.category.BROWSABLE \
    -d "http://<web-domain>/details"' \
    <package name>

テストする両方Web とアプリのセットアップでは、リンクをクリックする必要があります Web ブラウザまたは別のアプリから直接。 1 つの方法は、Google ドキュメントを作成し、リンクを追加して、それをタップすることです。

すべてが正しく設定されている場合、Flutter アプリケーションは 起動して詳細画面が表示されます。

Deeplinked Emulator screenshot

付録

ソースコード:ディープリンク_クックブック